const api_base = 'https://yijing.wcip.net';
const api_base_slash = api_base + '/';  // 带 / 的根路径
const api = api_base + '/pc/';
const default_img = 'images/taiji-default.png';

function date_format(fmt, date) {
  var o = {
    "M+": date.getMonth() + 1,                 //月份
    "d+": date.getDate(),                    //日
    "h+": date.getHours(),                   //小时
    "m+": date.getMinutes(),                 //分
    "s+": date.getSeconds(),                 //秒
    "q+": Math.floor((date.getMonth() + 3) / 3), //季度
    "S": date.getMilliseconds()             //毫秒
  };
  if (/(y+)/.test(fmt))
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
  for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt))
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  return fmt;
}

// 获取hash参数（#后面的参数）
function get_hash_params() {
  var url = location.hash; //获取url中"?"符后的字串
  var theRequest = {};
  if (url.indexOf("#") !== -1) {
    var str = url.substr(1);
    strs = str.split("&");
    for(var i = 0; i < strs.length; i ++) {
      theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
    }
  }
  return theRequest;
}

// 将对象转成query字符串
function _obj_to_query(obj) {
  let query = [];
  for (let key in obj) {
    query.push(`${key}=${obj[key]}`);
  }
  return query.join('&');
}

// 通用ajax方法
function ajax(vue, url, data, handle_code_list = []) {
  data = data || {};

  return new Promise((resolve, reject) => {
    axios({
      method: 'post',
      url: api + url,
      data: data instanceof FormData ? data : _obj_to_query(data),  // 如果是FormData类型则为上传文件，data原样上传
      timeout: 50000  // 请求超时时间
    })
      .then(res => {
        if (res.data.code === 1) {
          resolve(res.data.data);  // 接口正确则直接返回数据
        } else {
          // 如果错误码在自行处理的列表里，则reject回去
          if (handle_code_list.indexOf(res.data.code) !== -1) {
            reject(res.data);
          } else {
            switch (res.data.code) {
              default:
                vue.$toast(res.data.message);
                break;
            }
          }
        }
      })
      .catch(() => {
        vue.$toast('网络超时');
      });
  });
}

/*
 * 补齐图片路径
 * type: 1.对象属性 2.对象数组属性（mixed_img为对象或数组时） 3.图片字符串数组
 * field_name: 字符串为单个属性，数组为多个属性
 */
function fixed_img_path(mixed_img, field_name, type = 1) {
  if (mixed_img) {
    if (typeof mixed_img === 'string') {
      return mixed_img ? api_base_slash + mixed_img : default_img;
    } else {
      switch (type) {
        case 1:
          if (typeof field_name === 'string') {
            mixed_img[field_name] = mixed_img[field_name] ? api_base_slash + mixed_img[field_name] : default_img;
          } else {
            for (let i = 0; i < field_name.length; i++) {
              mixed_img[field_name[i]] = mixed_img[field_name[i]] ? api_base_slash + mixed_img[field_name[i]] : default_img;
            }
          }
          break;
        case 2:
          if (typeof field_name === 'string') {
            for (let i = 0; i < mixed_img.length; i++) {
              mixed_img[i][field_name] = mixed_img[i][field_name] ? api_base_slash + mixed_img[i][field_name] : default_img;
            }
          } else {
            for (let i = 0; i < mixed_img.length; i++) {
              for (let j = 0; j < field_name.length; j++) {
                mixed_img[i][field_name[j]] = mixed_img[i][field_name[j]] ? api_base_slash + mixed_img[i][field_name[j]] : default_img;
              }
            }
          }
          break;
        case 3:
          for (let i = 0; i < mixed_img.length; i++) {
              mixed_img[i] = mixed_img[i] ? api_base_slash + mixed_img[i] : default_img;
          }
          break;
      }
    }
  } else {
    return '';
  }
}

// 补齐富文本中图片路径
function fixed_rich_img_path(rich) {
  return rich ? rich.replace(/\/ueditor\/php\/upload\//g, api_base + '/ueditor/php/upload/') : '';
}

// 关闭loading
function loading_close() {
  document.body.className = '';
  document.getElementById('loading').remove();
}
